package com.xbts.system.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xbts.system.domain.CnCloudMarket;
import com.xbts.system.domain.CnCloudMarketSku;
import com.xbts.system.domain.dto.CnCloudMarketSkuDTO;
import com.xbts.system.domain.vo.CnCloudMarketUserVO;
import com.xbts.system.domain.vo.CnCloudMarketVO;

/**
 * 云市场Service接口
 * 
 * @author xbts
 * @date 2023-08-22
 */
public interface ICnCloudMarketService  extends IService<CnCloudMarket> {

    /**
     * 查询云市场列表
     *
     * @param cnCloudMarket 云市场
     * @return 云市场集合
     */
     List<CnCloudMarket> selectCnCloudMarketList(CnCloudMarket cnCloudMarket);

    /**
     * 查询云市场
     *
     * @param id 云市场主键
     * @return 云市场
     */
     CnCloudMarket selectCnCloudMarketById(String id);


    /**
     * 新增云市场
     *
     * @param cnCloudMarket 云市场
     * @return 结果
     */
     boolean insertCnCloudMarket(CnCloudMarketVO cnCloudMarket);

    /**
     * 修改云市场
     *
     * @param cnCloudMarket 云市场
     * @return 结果
     */
     boolean updateCnCloudMarket(CnCloudMarketVO cnCloudMarket);

    /**
     * 批量删除云市场
     *
     * @param ids 需要删除的云市场主键集合
     * @return 结果
     */
     boolean deleteCnCloudMarketByIds(List<String> ids);

    /**
     * 删除云市场信息
     *
     * @param id 云市场主键
     * @return 结果
     */
     boolean deleteCnCloudMarketById(String id);

    /**
     * 获取一级目录
     *
     * @param marketId@return 一级目录
     */
//    List<CnCloudMarketSku> getFirstDirectory( String marketId);
    List<String> getFirstDirectory( String marketId);

    /**
     * 根据一级目录查询二级目录下所有的数据
     * @param cnCloudMarketSku 一级目录
     * @return 二级目录
     */
    List<String> getNextDirectory(CnCloudMarketSku cnCloudMarketSku);

    /**
     * 根据一级目录和二级目录查询购买方式
     * @param cnCloudMarketSku 条件
     * @return
     */
    List<CnCloudMarketSku> getPurchaseMethod(CnCloudMarketSku cnCloudMarketSku);

    /**
     * 云市场规格价格计算
     */
    BigDecimal priceCalculation(CnCloudMarketSkuDTO cnCloudMarketSku);

    /**
     * 总后台查询云市场
     * @param searchValue
     * @return
     */
    List<CnCloudMarketUserVO> userBelongToList(String searchValue);


}
